package tech.yixiyun.framework.kuafu.log;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.core.Logger;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.message.MessageFactory;
import org.apache.logging.log4j.util.MessageSupplier;
import org.apache.logging.log4j.util.Supplier;

public class kuafuLogger extends Logger {


    protected  String FQCN = LOGGER.class.getName();

    /**
     * The constructor.
     *
     * @param context        The LoggerContext this Logger is associated with.
     * @param name           The name of the Logger.
     * @param messageFactory The message factory.
     */
    protected kuafuLogger(LoggerContext context, String name, MessageFactory messageFactory) {
        super(context, name, messageFactory);
    }

    /**
     * 更改全限定名，可以实现间接调用。框架专用，不要随便用这个方法。
     * @param FQCN
     */
    public void setFQCN(String FQCN) {
        this.FQCN = FQCN;
    }



    protected void logMessage(final String fqcn, final Level level, final Marker marker, final CharSequence message,
                              final Throwable t) {
        super.logMessage(FQCN, level, marker, message, t);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final Object message,
                              final Throwable t) {
        super.logMessage(FQCN, level, marker, message, t);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker,
                              final MessageSupplier msgSupplier, final Throwable t) {
        super.logMessage(FQCN, level, marker, msgSupplier, t);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final Supplier<?> msgSupplier,
                              final Throwable t) {
        super.logMessage(FQCN, level, marker, msgSupplier, t);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Throwable t) {
        super.logMessage(FQCN, level, marker, message, t);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message) {
        super.logMessage(FQCN, level, marker, message);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object... params) {
        super.logMessage(FQCN, level, marker, message, params);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0) {
        super.logMessage(FQCN, level, marker, message,p0);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1) {
        super.logMessage(FQCN, level, marker, message,p0,  p1);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3, final Object p4) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3, p4);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3, p4, p5);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
                              final Object p6) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3, p4, p5, p6);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
                              final Object p6, final Object p7) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3, p4, p5, p6, p7);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
                              final Object p6, final Object p7, final Object p8) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3, p4, p5, p6, p7, p8);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Object p0, final Object p1, final Object p2, final Object p3, final Object p4, final Object p5,
                              final Object p6, final Object p7, final Object p8, final Object p9) {
        super.logMessage(FQCN, level, marker, message,p0,  p1, p2, p3, p4, p5, p6, p7, p8, p9);
    }

    protected void logMessage(final String fqcn, final Level level, final Marker marker, final String message,
                              final Supplier<?>... paramSuppliers) {
        super.logMessage(FQCN, level, marker, message, paramSuppliers);
    }


}
